package github.javaguide.remoting.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.io.Serializable;

/**
 * RPC请求的实体类
 */
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Builder
@ToString
public class RpcRequest implements Serializable {
    private static final long serialVersionUID = 1905122041950251207L;
    /**
     * 请求ID
     */
    private String requestId;
    private String interfaceName; //接口名
    private String methodName;  //方法名
    private Object[] parameters;//参数列表
    private Class<?>[] paramTypes;//参数类型
    private String version;//版本号
    private String group; //组别

    /**
     * 获得服务名 通过接口名 组别 和版本号得到一个唯一的服务
     * @return
     */
    public String getRpcServiceName() {
        return this.getInterfaceName() + this.getGroup() + this.getVersion();
    }
}
